package cn.yuanqiao.archive.appManager.domain;

import cn.yuanqiao.common.annotation.Excel;
import cn.yuanqiao.common.annotation.IdAnnotation;
import cn.yuanqiao.common.utils.StringUtils;
import cn.yuanqiao.common.core.domain.BaseEntity;
import cn.yuanqiao.common.utils.SecurityUtils;
import com.fasterxml.jackson.annotation.JsonFormat;

import java.util.Objects;

/**
 * 元数据明细对象 HDDAMDATALIST
 *
 * @author yuanqiao
 * @date 2023-06-09
 */
public class TenantMdataList extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    public static final String BIGTABLENAME = "_MDATA_LIST";

    public TenantMdataList() {
        String tenantCode = "";
        if(SecurityUtils.getLoginUser()!=null){
            tenantCode=SecurityUtils.getLoginUser().getUser().getTenantCode();

        }
        if(StringUtils.isEmpty(tenantCode)){
            //throw new ServiceException("TenantCode is null");
        }else {
            this.tableName = tenantCode.toUpperCase()+BIGTABLENAME;
        }
    }

    /** ID */
    @IdAnnotation
    @JsonFormat(shape = JsonFormat.Shape.STRING)//转化成string传到前端
    private Long id;

    /** 元数据方案ID */
    //@Excel(name = "元数据方案ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)//转化成string传到前端
    private Long groupId;

    /** 中文名称 */
    @Excel(name = "中文名称")
    private String fieldCaption;

    /** 数据库列名 */
    @Excel(name = "数据库列名")
    private String fieldName;

    /** 属性名称 */
    @Excel(name = "属性名称")
    private String propertyName;

    /** 字段类型 */
    @Excel(name = "字段类型",readConverterExp="1=整型,2=字符型,3=日期,4=浮点,5=超长文本,6=图像,7=长整型")
    private Integer fieldType;

    /** 字段长度 */
    @Excel(name = "字段长度")
    private Integer dataLength;

    /** 是否可录入 */
    @Excel(name = "是否可录入",readConverterExp="0=否,1=是")
    private Integer isInput;

    /** 是否可修改 */
    @Excel(name = "是否可修改",readConverterExp="0=否,1=是")
    private Integer isUpdate;

    /** 查询模式 */
    @Excel(name = "查询模式",readConverterExp="0=不参加查询,1=精确查询,2=模糊查询,3=左匹配查询,4=区间查询,5=列表查询,6=单选对话框,7=多选对话框")
    private Integer isQuery;

    /** 是否档号字段 */
    @Excel(name = "是否档号字段",readConverterExp="0=否,1=是")
    private Integer isArchiveNo;

    /** 是否系统字段 */
    @Excel(name = "是否系统字段",readConverterExp="0=否,1=是")
    private Integer isSystem;

    /** 是否非空 */
    @Excel(name = "是否非空",readConverterExp="0=否,1=是")
    private Integer isNoEmpty;

    /** 默认值 */
    @Excel(name = "默认值")
    private String defaultValue;

    /** 是否隐藏 */
    @Excel(name = "是否隐藏",readConverterExp="0=否,1=是")
    private Integer isHidden;

    /** 是否可导出 */
    @Excel(name = "是否可导出",readConverterExp="0=否,1=是")
    private Integer isExport;

    /** 导出列别名 */
    @Excel(name = "导出列别名")
    private String exportColumnName;

    /** 导出排序号 */
    @Excel(name = "导出排序号")
    private Integer exportOrderNo;

    /** 创建人ID */
    @Excel(name = "创建人ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)//转化成string传到前端
    private Long creatorId;

    /** 表单宽度 */
    @Excel(name = "表单宽度")
    private Integer colWidth;

    /** 列表表头宽度 */
    @Excel(name = "列表表头宽度")
    private Integer thWidth;

    /** 对齐方式 */
    @Excel(name = "对齐方式",readConverterExp = "left=左对齐,center=居中,right=右对齐")
    private String thAlign;

    /** 层次 */
    @Excel(name = "层次",readConverterExp="0=组件,1=组卷,2=电子文件,3=项目")
    private Integer type;

    /** 排序号 */
    @Excel(name = "排序号")
    private Integer orderNo;

    /** 字段展示类型 */
    @Excel(name = "字段展示类型",readConverterExp="1=整数,2=浮点,3=日期,4=文本,5=下拉,6=图像,7=部门（单选）,8=人员（单选）,9=文本域")
    private Integer showType;

    /** 是否元数据 */
    @Excel(name = "是否元数据",readConverterExp="0=否,1=是")
    private Integer isMetadata;

    /** 编号（元数据） */
    @Excel(name = "编号")
    private String bianHao;

    /** 英文名称（元数据） */
    @Excel(name = "英文名称")
    private String englishName;

    /** 定义（元数据） */
    @Excel(name = "定义")
    private String definition;

    /** 目的（元数据） */
    @Excel(name = "目的")
    private String purpose;

    /** 约束性（元数据） */
    @Excel(name = "约束性",readConverterExp = "0=条件选,1=必选,2=可选")
    private Integer constraints;

    /** 可重复性（元数据） */
    @Excel(name = "可重复性",readConverterExp = "0=否1=是")
    private Integer repeatString;

    /** 元素类型（元数据） */
    @Excel(name = "元素类型",readConverterExp = "0=简单型,1=容器型")
    private Integer elementType;

    /** 数据类型（元数据） */
    @Excel(name = "数据类型",readConverterExp = "1=整数,2=浮点,3=日期,4=文本,5=下拉,6=图像,7=部门（单选）,8=人员（单选）")
    private Integer dataType;

    /** 编码修饰体系（元数据） */
    @Excel(name = "编码修饰体系")
    private String code;

    /** 值域（元数据） */
    @Excel(name = "值域")
    private String range;

    /** 缺省值（元数据） */
    @Excel(name = "缺省值")
    private String defaultValueStr;

    /** 信息来源（元数据） */
    @Excel(name = "信息来源")
    private String sources;

    /** 注释（元数据） */
    @Excel(name = "注释")
    private String notes;

    /** $column.columnComment */
    //@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Integer mdOrderNo;

    /** $column.columnComment */
    //@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Integer mdLevel;

    /** $column.columnComment */
    //@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Integer isCatalogue;

    /** $column.columnComment */
    //@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Integer catalogueOrder;

    /** $column.columnComment */
    //@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Integer isXmltitle;

    /** $column.columnComment */
    @Excel(name = "展示分类", readConverterExp = "1=基本数据,2=过程数据,3=固化信息,4=其他数据")
    private String zsfl;

    /** $column.columnComment */
    //@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Integer checkSpecialCharacters;

    /** $column.columnComment */
    //@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Integer checkArchivalCode;

    /** $column.columnComment */
    //@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Integer checkNoempty;

    /** $column.columnComment */
    @Excel(name = "导入重复检验", readConverterExp = "0=否,1=是")
    private Integer checkChongfu;

    /** $column.columnComment */
    @Excel(name = "是否可导入",readConverterExp = "0=否,1=是")
    private Integer isImport;

    @Excel(name = "子元素编号")
    private String zibianhao;

    @Excel(name = "相关元素编号")
    private String relateBianhao;

    @Excel(name = "可输入特殊字符")
    private String specialCharacter;

    private String tableName;

    private String ids;

    private String releFieldName;

    private String changefiled;

    public String getReleFieldName() {
        return releFieldName;
    }

    public void setReleFieldName(String releFieldName) {
        this.releFieldName = releFieldName;
    }

    public String getIds() {
        return ids;
    }

    public void setIds(String ids) {
        this.ids = ids;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setGroupId(Long groupId)
    {
        this.groupId = groupId;
    }

    public Long getGroupId()
    {
        return groupId;
    }
    public void setFieldCaption(String fieldCaption)
    {
        this.fieldCaption = fieldCaption;
    }

    public String getFieldCaption()
    {
        return fieldCaption;
    }
    public void setFieldName(String fieldName)
    {
        this.fieldName = fieldName;
    }

    public String getFieldName()
    {
        return fieldName;
    }
    public void setPropertyName(String propertyName)
    {
        this.propertyName = propertyName;
    }

    public String getPropertyName()
    {
        return propertyName;
    }
    public void setFieldType(Integer fieldType)
    {
        this.fieldType = fieldType;
    }

    public Integer getFieldType()
    {
        return fieldType;
    }
    public void setDataLength(Integer dataLength)
    {
        this.dataLength = dataLength;
    }

    public Integer getDataLength()
    {
        return dataLength;
    }
    public void setIsInput(Integer isInput)
    {
        this.isInput = isInput;
    }

    public Integer getIsInput()
    {
        return isInput;
    }
    public void setIsUpdate(Integer isUpdate)
    {
        this.isUpdate = isUpdate;
    }

    public Integer getIsUpdate()
    {
        return isUpdate;
    }
    public void setIsQuery(Integer isQuery)
    {
        this.isQuery = isQuery;
    }

    public Integer getIsQuery()
    {
        return isQuery;
    }
    public void setIsArchiveNo(Integer isArchiveNo)
    {
        this.isArchiveNo = isArchiveNo;
    }

    public Integer getIsArchiveNo()
    {
        return isArchiveNo;
    }
    public void setIsSystem(Integer isSystem)
    {
        this.isSystem = isSystem;
    }

    public Integer getIsSystem()
    {
        return isSystem;
    }
    public void setIsNoEmpty(Integer isNoEmpty)
    {
        this.isNoEmpty = isNoEmpty;
    }

    public Integer getIsNoEmpty()
    {
        return isNoEmpty;
    }
    public void setDefaultValue(String defaultValue)
    {
        this.defaultValue = defaultValue;
    }

    public String getDefaultValue()
    {
        return defaultValue;
    }
    public void setIsHidden(Integer isHidden)
    {
        this.isHidden = isHidden;
    }

    public Integer getIsHidden()
    {
        return isHidden;
    }
    public void setIsExport(Integer isExport)
    {
        this.isExport = isExport;
    }

    public Integer getIsExport()
    {
        return isExport;
    }
    public void setExportColumnName(String exportColumnName)
    {
        this.exportColumnName = exportColumnName;
    }

    public String getExportColumnName()
    {
        return exportColumnName;
    }
    public void setExportOrderNo(Integer exportOrderNo)
    {
        this.exportOrderNo = exportOrderNo;
    }

    public Integer getExportOrderNo()
    {
        return exportOrderNo;
    }
    public void setCreatorId(Long creatorId)
    {
        this.creatorId = creatorId;
    }

    public Long getCreatorId()
    {
        return creatorId;
    }
    public void setColWidth(Integer colWidth)
    {
        this.colWidth = colWidth;
    }

    public Integer getColWidth()
    {
        return colWidth;
    }
    public void setThWidth(Integer thWidth)
    {
        this.thWidth = thWidth;
    }

    public Integer getThWidth()
    {
        return thWidth;
    }
    public void setThAlign(String thAlign)
    {
        this.thAlign = thAlign;
    }

    public String getThAlign()
    {
        return thAlign;
    }
    public void setType(Integer type)
    {
        this.type = type;
    }

    public Integer getType()
    {
        return type;
    }
    public void setOrderNo(Integer orderNo)
    {
        this.orderNo = orderNo;
    }

    public Integer getOrderNo()
    {
        return orderNo;
    }
    public void setShowType(Integer showType)
    {
        this.showType = showType;
    }

    public Integer getShowType()
    {
        return showType;
    }
    public void setIsMetadata(Integer isMetadata)
    {
        this.isMetadata = isMetadata;
    }

    public Integer getIsMetadata()
    {
        return isMetadata;
    }
    public void setBianHao(String bianHao)
    {
        this.bianHao = bianHao;
    }

    public String getBianHao()
    {
        return bianHao;
    }
    public void setEnglishName(String englishName)
    {
        this.englishName = englishName;
    }

    public String getEnglishName()
    {
        return englishName;
    }
    public void setDefinition(String definition)
    {
        this.definition = definition;
    }

    public String getDefinition()
    {
        return definition;
    }
    public void setPurpose(String purpose)
    {
        this.purpose = purpose;
    }

    public String getPurpose()
    {
        return purpose;
    }
    public void setConstraints(Integer constraints)
    {
        this.constraints = constraints;
    }

    public Integer getConstraints()
    {
        return constraints;
    }
    public void setRepeatString(Integer repeatString)
    {
        this.repeatString = repeatString;
    }

    public Integer getRepeatString()
    {
        return repeatString;
    }
    public void setElementType(Integer elementType)
    {
        this.elementType = elementType;
    }

    public Integer getElementType()
    {
        return elementType;
    }
    public void setDataType(Integer dataType)
    {
        this.dataType = dataType;
    }

    public Integer getDataType()
    {
        return dataType;
    }
    public void setCode(String code)
    {
        this.code = code;
    }

    public String getCode()
    {
        return code;
    }
    public void setRange(String range)
    {
        this.range = range;
    }

    public String getRange()
    {
        return range;
    }

    public String getDefaultValueStr() {
        return defaultValueStr;
    }

    public void setDefaultValueStr(String defaultValueStr) {
        this.defaultValueStr = defaultValueStr;
    }

    public void setSources(String sources)
    {
        this.sources = sources;
    }

    public String getSources()
    {
        return sources;
    }
    public void setNotes(String notes)
    {
        this.notes = notes;
    }

    public String getNotes()
    {
        return notes;
    }
    public void setMdOrderNo(Integer mdOrderNo)
    {
        this.mdOrderNo = mdOrderNo;
    }

    public Integer getMdOrderNo()
    {
        return mdOrderNo;
    }
    public void setMdLevel(Integer mdLevel)
    {
        this.mdLevel = mdLevel;
    }

    public Integer getMdLevel()
    {
        return mdLevel;
    }
    public void setIsCatalogue(Integer isCatalogue)
    {
        this.isCatalogue = isCatalogue;
    }

    public Integer getIsCatalogue()
    {
        return isCatalogue;
    }
    public void setCatalogueOrder(Integer catalogueOrder)
    {
        this.catalogueOrder = catalogueOrder;
    }

    public Integer getCatalogueOrder()
    {
        return catalogueOrder;
    }
    public void setIsXmltitle(Integer isXmltitle)
    {
        this.isXmltitle = isXmltitle;
    }

    public Integer getIsXmltitle()
    {
        return isXmltitle;
    }
    public void setZsfl(String zsfl)
    {
        this.zsfl = zsfl;
    }

    public String getZsfl()
    {
        return zsfl;
    }
    public void setCheckSpecialCharacters(Integer checkSpecialCharacters)
    {
        this.checkSpecialCharacters = checkSpecialCharacters;
    }

    public Integer getCheckSpecialCharacters()
    {
        return checkSpecialCharacters;
    }
    public void setCheckArchivalCode(Integer checkArchivalCode)
    {
        this.checkArchivalCode = checkArchivalCode;
    }

    public Integer getCheckArchivalCode()
    {
        return checkArchivalCode;
    }
    public void setCheckNoempty(Integer checkNoempty)
    {
        this.checkNoempty = checkNoempty;
    }

    public Integer getCheckNoempty()
    {
        return checkNoempty;
    }
    public void setCheckChongfu(Integer checkChongfu)
    {
        this.checkChongfu = checkChongfu;
    }

    public Integer getCheckChongfu()
    {
        return checkChongfu;
    }
    public void setIsImport(Integer isImport)
    {
        this.isImport = isImport;
    }

    public Integer getIsImport()
    {
        return isImport;
    }

    public String getZibianhao() {
        return zibianhao;
    }

    public void setZibianhao(String zibianhao) {
        this.zibianhao = zibianhao;
    }

    public String getRelateBianhao() {
        return relateBianhao;
    }

    public void setRelateBianhao(String relateBianhao) {
        this.relateBianhao = relateBianhao;
    }

    public String getTableName() {
        return tableName;
    }

    public void setTableName(String tableName) {
        this.tableName = tableName;
    }

    public String getSpecialCharacter() {
        return specialCharacter;
    }

    public void setSpecialCharacter(String specialCharacter) {
        this.specialCharacter = specialCharacter;
    }

    public String getChangefiled() {
        return changefiled;
    }

    public void setChangefiled(String changefiled) {
        this.changefiled = changefiled;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        TenantMdataList mdataList = (TenantMdataList) o;
        return Objects.equals(id, mdataList.id) &&
                Objects.equals(groupId, mdataList.groupId) &&
                Objects.equals(fieldCaption, mdataList.fieldCaption) &&
                Objects.equals(fieldName, mdataList.fieldName) &&
                Objects.equals(propertyName, mdataList.propertyName) &&
                Objects.equals(fieldType, mdataList.fieldType) &&
                Objects.equals(dataLength, mdataList.dataLength) &&
                Objects.equals(isInput, mdataList.isInput) &&
                Objects.equals(isUpdate, mdataList.isUpdate) &&
                Objects.equals(isQuery, mdataList.isQuery) &&
                Objects.equals(isArchiveNo, mdataList.isArchiveNo) &&
                Objects.equals(isSystem, mdataList.isSystem) &&
                Objects.equals(isNoEmpty, mdataList.isNoEmpty) &&
                Objects.equals(defaultValue, mdataList.defaultValue) &&
                Objects.equals(isHidden, mdataList.isHidden) &&
                Objects.equals(isExport, mdataList.isExport) &&
                Objects.equals(exportColumnName, mdataList.exportColumnName) &&
                Objects.equals(exportOrderNo, mdataList.exportOrderNo) &&
                Objects.equals(creatorId, mdataList.creatorId) &&
                Objects.equals(colWidth, mdataList.colWidth) &&
                Objects.equals(thWidth, mdataList.thWidth) &&
                Objects.equals(thAlign, mdataList.thAlign) &&
                Objects.equals(type, mdataList.type) &&
                Objects.equals(orderNo, mdataList.orderNo) &&
                Objects.equals(showType, mdataList.showType) &&
                Objects.equals(isMetadata, mdataList.isMetadata) &&
                Objects.equals(bianHao, mdataList.bianHao) &&
                Objects.equals(englishName, mdataList.englishName) &&
                Objects.equals(definition, mdataList.definition) &&
                Objects.equals(purpose, mdataList.purpose) &&
                Objects.equals(constraints, mdataList.constraints) &&
                Objects.equals(repeatString, mdataList.repeatString) &&
                Objects.equals(elementType, mdataList.elementType) &&
                Objects.equals(dataType, mdataList.dataType) &&
                Objects.equals(code, mdataList.code) &&
                Objects.equals(range, mdataList.range) &&
                Objects.equals(defaultValueStr, mdataList.defaultValueStr) &&
                Objects.equals(sources, mdataList.sources) &&
                Objects.equals(notes, mdataList.notes) &&
                Objects.equals(mdOrderNo, mdataList.mdOrderNo) &&
                Objects.equals(mdLevel, mdataList.mdLevel) &&
                Objects.equals(isCatalogue, mdataList.isCatalogue) &&
                Objects.equals(catalogueOrder, mdataList.catalogueOrder) &&
                Objects.equals(isXmltitle, mdataList.isXmltitle) &&
                Objects.equals(zsfl, mdataList.zsfl) &&
                Objects.equals(checkSpecialCharacters, mdataList.checkSpecialCharacters) &&
                Objects.equals(checkArchivalCode, mdataList.checkArchivalCode) &&
                Objects.equals(checkNoempty, mdataList.checkNoempty) &&
                Objects.equals(checkChongfu, mdataList.checkChongfu) &&
                Objects.equals(isImport, mdataList.isImport) &&
                Objects.equals(zibianhao, mdataList.zibianhao) &&
                Objects.equals(relateBianhao, mdataList.relateBianhao) &&
                Objects.equals(specialCharacter, mdataList.specialCharacter);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, groupId, fieldCaption, fieldName, propertyName, fieldType, dataLength, isInput, isUpdate, isQuery, isArchiveNo, isSystem, isNoEmpty, defaultValue, isHidden, isExport, exportColumnName, exportOrderNo, creatorId, colWidth, thWidth, thAlign, type, orderNo, showType, isMetadata, bianHao, englishName, definition, purpose, constraints, repeatString, elementType, dataType, code, range, defaultValueStr, sources, notes, mdOrderNo, mdLevel, isCatalogue, catalogueOrder, isXmltitle, zsfl, checkSpecialCharacters, checkArchivalCode, checkNoempty, checkChongfu, isImport, zibianhao, relateBianhao, specialCharacter);
    }

    @Override
    public String toString() {
        return "HddaMDataList{" +
                "id=" + id +
                ", groupId=" + groupId +
                ", fieldCaption='" + fieldCaption + '\'' +
                ", fieldName='" + fieldName + '\'' +
                ", propertyName='" + propertyName + '\'' +
                ", fieldType=" + fieldType +
                ", dataLength=" + dataLength +
                ", isInput=" + isInput +
                ", isUpdate=" + isUpdate +
                ", isQuery=" + isQuery +
                ", isArchiveNo=" + isArchiveNo +
                ", isSystem=" + isSystem +
                ", isNoEmpty=" + isNoEmpty +
                ", defaultValue='" + defaultValue + '\'' +
                ", isHidden=" + isHidden +
                ", isExport=" + isExport +
                ", exportColumnName='" + exportColumnName + '\'' +
                ", exportOrderNo=" + exportOrderNo +
                ", creatorId=" + creatorId +
                ", colWidth=" + colWidth +
                ", thWidth=" + thWidth +
                ", thAlign='" + thAlign + '\'' +
                ", type=" + type +
                ", orderNo=" + orderNo +
                ", showType=" + showType +
                ", isMetadata=" + isMetadata +
                ", bianHao='" + bianHao + '\'' +
                ", englishName='" + englishName + '\'' +
                ", definition='" + definition + '\'' +
                ", purpose='" + purpose + '\'' +
                ", constraints=" + constraints +
                ", repeatString=" + repeatString +
                ", elementType=" + elementType +
                ", dataType=" + dataType +
                ", code='" + code + '\'' +
                ", range='" + range + '\'' +
                ", defaultValueStr='" + defaultValueStr + '\'' +
                ", sources='" + sources + '\'' +
                ", notes='" + notes + '\'' +
                ", mdOrderNo=" + mdOrderNo +
                ", mdLevel=" + mdLevel +
                ", isCatalogue=" + isCatalogue +
                ", catalogueOrder=" + catalogueOrder +
                ", isXmltitle=" + isXmltitle +
                ", zsfl='" + zsfl + '\'' +
                ", checkSpecialCharacters=" + checkSpecialCharacters +
                ", checkArchivalCode=" + checkArchivalCode +
                ", checkNoempty=" + checkNoempty +
                ", checkChongfu=" + checkChongfu +
                ", isImport=" + isImport +
                ", zibianhao='" + zibianhao + '\'' +
                ", relateBianhao='" + relateBianhao + '\'' +
                '}';
    }
}
